home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / sync / RCS / Sync.man,v < prev   
Text File  |  1988-12-30  |  3KB  |  94 lines

  1. head     1.1;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @@;
  7.  
  8.  
  9. 1.1
  10. date     88.12.30.16.07.18;  author ouster;  state Exp;
  11. branches ;
  12. next     ;
  13.  
  14.  
  15. desc
  16. @@
  17.  
  18.  
  19.  
  20. 1.1
  21. log
  22. @Initial revision
  23. @
  24. text
  25. @' $Header: Sync,v 1.4 87/01/06 15:12:03 andrew Exp $ SPRITE (Berkeley)
  26. .so \*(]ltmac.sprite
  27. .HS Sync lib 
  28. .BS
  29. .SH NAME
  30. Sync \- Synchronization overview
  31. .SH SYNOPSIS
  32. This section provides an overview of the Sprite \fBSync_\fR system routines.
  33. .BE
  34. .SH DESCRIPTION
  35. .PP
  36. Sprite provides system calls to allow processes to synchronize execution using
  37. Mesa-style monitors.
  38. .PP
  39. The following set of macros are used to emulate monitored
  40. procedures of Mesa.  The \fBLOCK_MONITOR\fR and \fBUNLOCK_MONITOR\fR macros 
  41. depend on a constant \fBLOCKPTR\fR.  \fBLOCKPTR\fR should be defined 
  42. as the address of the lock variable used to lock the monitor.  
  43. Something like the following two lines of code should appear 
  44. at the beginning of a file of monitored procedures.
  45. .nf
  46.  
  47.     #include <sync.h>
  48.  
  49.     Sync_Lock modMonitorLock;
  50.     #define LOCKPTR (&modMonitorLock)
  51.  
  52. .fi
  53. The pseudo-keywords \fBINTERNAL\fR and \fBENTRY\fR denote internal and entry
  54. procedures of a monitor.  \fBINTERNAL\fR procedures can only be called
  55. when the monitor lock is held.  \fBENTRY\fR procedures are procedures
  56. that acquire the lock.  There may also be External procedures.
  57. They are the default and there is no special keyword.  An External
  58. procedure doesn't explicitly acquire the monitor lock, but may
  59. call an \fBENTRY\fR procedure.
  60.  
  61. .PP
  62. Condition variables represent events that are associated with locks.
  63. The operations on a condition variable are \fBSync_Wait\fR and \fBSync_Broadcast\fR. 
  64. \fBSync_Wait\fR allows a process to wait for a particular monitor condition to occur.
  65. \fBSync_Broadcast\fR wakes up all processes waiting on a particular condition.  
  66. The lock must be acquired before a call to these routines is made.
  67. The lock is released while a process waits on a
  68. condition, and is then re-acquired when the condition is notified
  69. via \fBSync_Broadcast\fR.
  70. .\"An event is an integer value that is used to distinguish waiting processes:
  71. .\"a process that invokes Sync_SlowWait with a particular value will be 
  72. .\"awakened when another process calls Sync_Broadcast with the same value.
  73. .\"Addresses of data structures are commonly used as event values.
  74. .\"For example, to wait for data to arrive in a queue a process
  75. .\"could wait on the address of the queue structure;  when data
  76. .\"arrives, the process placing data in the queue could call
  77. .\"Sync_Broadcast with the same address.
  78. .PP
  79. \fBSync_Broadcast\fR is the only mechanism for awakening waiting
  80. processes.  For example, there is no means to notify only a single process
  81. awaiting a particular condition.  If several processes are awaiting the
  82. availability of a single shared resource, all processes awaiting the condition
  83. must be notified; they must each recheck for the availability
  84. of the resource, and all but one will find the resource unavailable
  85. and wait again.
  86. .PP
  87. \fBSync_WaitTime\fR is used to cause the process to sleep for a specific
  88. amount of time. The process will be woken up if a signal arrives.
  89. .SH "SEE ALSO"
  90. Sync_Broadcast, Sync_Wait, Sync_WaitTime
  91. .SH KEYWORDS
  92. synchronization, wait, block, process, event, wakeup, broadcast
  93. @
  94.